查看原文
其他

一直不解,为什么如此定义矩阵的乘法,为什么这样一种怪异的乘法规则却能够在实践中发挥如此巨大的功效?






数学算法俱乐部

日期2020年04月22日

正文共:1804字0图

预计阅读时间:5分钟

来源:数学之美


作者:张弘强
链接:http://www.zhihu.com/question/30898332/answer/49856568
来源:知乎
很多看上去似乎是完全不相关的问题,最后竟然都归结到矩阵的乘法?难道在矩阵乘法那看上去莫名其妙的规则下面,包含着世界的某些本质规律?如果是的话,这些本质规律是什么?
矩阵的乘法的规则并不是莫名其妙的,而是有它的意义的。
学过矩阵的同学应该知道线性代数这门课,这门课程同时还讲到了线性空间等相关知识。在线性空间下理解,矩阵其实就是一个线性映射,而矩阵的乘积就是线性映射的复合。从这个角度去理解,你也可以推到出矩阵乘法的规则。

在线性空间下理解,矩阵其实就是一个线性映射。
我们看一个很具体的例子就能理解。先来看一个线性方程组:
a11*x1 + a12*x2 = d1
a21*x1 + a22*x2 = d2
其中的a11,a12,a21,a22,d1,d2你可以当成已知的数值,x1和x2是方程组的未知数。
我们再尝试用另一组方程组表示未知数组(x1,x2)
x1 = b11*y1 + b12*y2
x2 = b21*y1 + b22*y2
在这里b11,b12,b21,b22是已知的数值,y1和y2是未知数,x1和x2可以被认为是随着y1和y2变化而变化的。
这时候,如果我们定义一种矩阵和向量的乘法,就可以把以上两个方程组表达如下:
A * x = d, x = B * y
这里的A和B是矩阵,
A = a11,a12
a21,a22
B = b11,b12
b21,b22
d,x和y分别是向量(d1,d2),(x1,x2)和(y1,y2)
其中乘法的细节就是以上两个方程组的表达式。(请自行检查)
很自然的,我们希望矩阵和向量的乘法跟数值之间的乘法在“表面”上保持一致。我们把x = B * y作为x的表达式,代入A * x = d,就会的得到很有趣的结果,A * B * y = d,
从另一个角度看,这可以被认为是 (A*B)* y = d (当然这其中还有很大的学问,比如为什么乘法结合律在这里适用,这一点不在这里讨论。)
这里就引入了A*B,是两个矩阵的乘积。我们需要理解它的含义,换句话说就是他的实际的计算规则,
重点来了,这个时候,走回到以上两个方程组,我们把x1 = b11*y1 + b12*y2和x2 = b21*y1 + b22*y2代入第一个方程组的两个方程,就会得到,
a11*(b11*y1 + b12*y2) + a12*(b21*y1 + b22*y2) = d1
a21*(b11*y1 + b12*y2) + a22*(b21*y1 + b22*y2) = d2
展开他们,然后重新组合,把带y1和y2的项分开重组,就会得到:
(a11*b11 + a12*b21)*y1 + (a11*b12 + a21*b22)*y2 = d1
(a21*b11 + a22*b21)*y1 + (a21*b12 + a22*b22)*y2 = d1
这就快接近我们的答案了。我们按照之前矩阵和向量的乘法的设计思路,把这两个方程写成以下形式,
C * y = d,
其中,
C = (a11*b11 + a12*b21), (a11*b12 + a21*b22)
(a21*b11 + a22*b21), (a21*b12 + a22*b22)
d和y分别是向量(d1,d2)和(y1,y2)。
最后一步,你就发现之前得到的 (A*B) * y = d 和这里的 C * y = d很像,相比较之后,可以得到的结论是,
A*B = C
wow~, 那么,结论来了,这时候我们可以把 A*B 用 C 的表达式来表示,
A* B = (a11*b11 + a12*b21), (a11*b12 + a21*b22)
(a21*b11 + a22*b21), (a21*b12 + a22*b22)

这就是课堂里直接定义的矩阵乘法的计算规则!

若是有兴趣,还可以尝试更高维度的方程组,比如三个未知数的方程组,同时方程组里有三个方程。
更进一步,是尝试未知数数目与方程数并不一致的情况。其难点在于设计第二个方程组的未知数数量和方程数量需要与原方程组对调。
如果你完成了这些尝试,我觉得你已经基本上理解矩阵乘法的计算规则的来历和意义了。
当然,这里其实还没解释为什么可以认为一个矩阵就是一个线性映射,简单的说,
A * x = y 就是一种映射,A作用(乘)在x身上,把x向量,改造成了y向量,而改造的细节规则,就是由A矩阵里面的每一个元素刻画和描述的。
换另一个矩阵B的话,就会把同样的x向量映射到另一个不同的 y' 向量了。
而A*B这个矩阵的意义来自于 (A*B) * x = y的情况下,看似是A*B把x映射成y
同时你可以把这个式子重组为:A * (B*x) = y
这就是说,在括号内部,B先把x映射成为某个向量z,然后A再把z映射成y。
这就是为什么说 A*B 实际上是两个线性映射A和B的复合。复合的意思就是B先作用与x,A再作用在B作用后的结果上。



— THE END —


很多事情难解释,回归平均是原因
什么是几何学编程语言大牛王根:编程的智慧(上)我,斯坦福AI读博,李飞飞是师娘,5年5篇顶会论文,依然一度抑郁怀疑人生施一公:没有高考,就没有一批非常优秀的社会精英从农村走出来知乎热搜可以被人为控制吗?如果可以,怎么操作

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存